package jmine.tec.persist.hibernate.merger;

import java.io.Serializable;

/**
 * Carregador de entidades por classe e id.
 * 
 * @author lundberg
 * @author gabriel.silva
 */
public interface EntityLoader {

    /**
     * Carrega uma entidade dada sua classe e id. Caso a entidade não seja encontrada retorna uma nova instância.
     * 
     * @param <T> tipo genérico da entidade
     * @param id id
     * @param entityClass entityClass
     * @return entity
     */
    <T> T get(Class<T> entityClass, Serializable id);

    /**
     * Cria uma nova instância da entidade
     * 
     * @param <T> tipo genérico da entidade
     * @param entityClass entityClass
     * @return entity
     */
    <T> T create(Class<T> entityClass);
}
